#ifndef QTSERIALIZATION_H
#define QTSERIALIZATION_H

#include <QDataStream>
#include <QString>


#include "earthquake_global.h"

#include "QtDebug.h"
#include "tempiritornol.h"
#include "specparaml.h"
#include "specdesignl.h"
#include "seismicgrid.h"
#include "fl_ntcstg.h"
#include "fl_ntctpg.h"
#include "PTime.h"
#include "Elab.h"
#include "Work.h"
#include "Comm.h"
#include "pfileitem.h"
#include "projectdata.h"
#include "pfilelist.h"

QDataStream& operator << ( QDataStream &out, const Comm &comm );
QDataStream& operator >> ( QDataStream  &in,       Comm &comm );

QDataStream& operator << ( QDataStream &out, const Work &work );
QDataStream& operator >> ( QDataStream  &in,       Work &work );

QDataStream& operator << ( QDataStream &out, const Elab &elab );
QDataStream& operator >> ( QDataStream  &in,       Elab &elab );

QDataStream& operator << ( QDataStream &out, const PTime &time );
QDataStream& operator >> ( QDataStream  &in,       PTime &time );

QDataStream& operator << ( QDataStream &out, const TpSLsismico &sls );
QDataStream& operator >> ( QDataStream  &in,       TpSLsismico &sls );

QDataStream& operator << ( QDataStream &out, const TpCostruzione &co );
QDataStream& operator >> ( QDataStream  &in,       TpCostruzione &co );

QDataStream& operator << ( QDataStream &out, const TpClasseUso&tpcu );
QDataStream& operator >> ( QDataStream & in,       TpClasseUso&tpcu );

QDataStream& operator << ( QDataStream &out, const TpClasseUso&tpcu );
QDataStream& operator >> ( QDataStream & in,       TpClasseUso&tpcu );

QDataStream& operator << ( QDataStream &out, const fl_NtcStg &stg );
QDataStream& operator >> ( QDataStream  &in,       fl_NtcStg &stg );

QDataStream& operator << ( QDataStream &out, const fl_NtcTpg &tpg );
QDataStream& operator >> ( QDataStream  &in,       fl_NtcTpg &tpg );

QDataStream& operator << ( QDataStream &out, const PKeyItem &key );
QDataStream& operator >> ( QDataStream  &in,       PKeyItem &key );

QDataStream& operator << ( QDataStream &out, const PKey &key );
QDataStream& operator >> ( QDataStream  &in,       PKey &key );

QDataStream& operator << ( QDataStream &out, const PItem &item );
QDataStream& operator >> ( QDataStream  &in,       PItem &item );

QDataStream& operator << ( QDataStream &out, const TempiRitorno &tr );
QDataStream& operator >> ( QDataStream  &in,       TempiRitorno &tr );

QDataStream& operator << ( QDataStream &out, const EPoint &p );
QDataStream& operator >> ( QDataStream  &in,       EPoint &p );

QDataStream& operator << ( QDataStream &out, const PRef &ref );
QDataStream& operator >> ( QDataStream  &in,       PRef &ref );

QDataStream& operator << ( QDataStream &out, const SpecParam &param );
QDataStream& operator >> ( QDataStream  &in,       SpecParam &param );

QDataStream& operator << ( QDataStream &out, const SeismicPoint &p );
QDataStream& operator >> ( QDataStream  &in,       SeismicPoint &p );

QDataStream& operator << ( QDataStream &out, const SeismicSite &ss );
QDataStream& operator >> ( QDataStream  &in,       SeismicSite &ss );

QDataStream& operator << ( QDataStream &out, const SeismicLandmark &sl );
QDataStream& operator >> ( QDataStream  &in,       SeismicLandmark &sl );

QDataStream& operator << ( QDataStream &out, const SeismicGrid &grid );
QDataStream& operator >> ( QDataStream  &in,       SeismicGrid &grid );

QDataStream& operator << ( QDataStream &out, const Ductility &ductility );
QDataStream& operator >> ( QDataStream  &in,       Ductility &ductility );

QDataStream& operator << ( QDataStream &out, const ProjectData &prj_data );
QDataStream& operator >> ( QDataStream  &in,       ProjectData &prj_data );

QDataStream &operator<<(QDataStream &out, const Damping &damping);

QDataStream &operator>>(QDataStream &in, Damping &damping);

QDataStream &operator<<(QDataStream &out, const TpSpecDesign &tp);

QDataStream &operator>>(QDataStream &in, TpSpecDesign &tp);

QDataStream &operator<<(QDataStream &out, const SpecDesign &sd);

QDataStream &operator>>(QDataStream &in, SpecDesign &sd);

QDataStream& operator << ( QDataStream& out, const TempiRitornoL& list );

QDataStream& operator >> ( QDataStream& in, TempiRitornoL& list );

QDataStream& operator << ( QDataStream &out, const SpecParamL &list );
QDataStream& operator >> ( QDataStream  &in,       SpecParamL &list );

QDataStream& operator << ( QDataStream &out, const PFileList &plist );
QDataStream& operator >> ( QDataStream  &in,       PFileList &plist );

QDataStream& operator << ( QDataStream& out, const SpecDesignL& list );

QDataStream& operator >> ( QDataStream& in, SpecDesignL& list );

QDataStream& operator << ( QDataStream &out, const PFileItem &item );

QDataStream& operator >> ( QDataStream  &in,       PFileItem &item );

#endif // QTSERIALIZATION_H
